有新的连接进入时,在worker进程中回调。函数原型:
function onConnect(swoole_server $server, int $fd, int $reactorId);
$server
是Swoole\Server
对象$fd
是连接的文件描述符,发送数据/关闭连接时需要此参数$reactorId
来自哪个Reactor
线程
关于
$fd
和$reactorId
详细的解释
onConnect/onClose这2个回调发生在worker进程内,而不是主进程。
UDP协议下只有onReceive事件,没有onConnect/onClose事件
在1.7.15
以上版本中,当设置dispatch_mode = 1/3
时会自动去掉onConnect/onClose
事件回调。原因是:
- 在此模式下
onConnect/onReceive/onClose
可能会被投递到不同的进程。连接相关的PHP
对象数据,无法实现在onConnect
回调初始化数据,onClose
清理数据 onConnect/onReceive/onClose
3种事件可能会并发执行,可能会带来异常